// 用户模块

import { User, UserProfile } from '@/types/data';
import { UserAction } from '@/types/store';

type UserState = {
  user: User;
  profile: UserProfile;
};

const initialState = {
  user: {}, // 用户自己的信息
  profile: {}, // 用户的描述信息
} as UserState; // 就不用初始化每一个字段了

export const user = (state = initialState, action: UserAction): UserState => {
  // 用户信息数据处理
  if (action.type === 'user/getUser') {
    return {
      ...state,
      user: action.payload,
    };
  }

  // 用户描述信息处理，注意这里发生了类型收缩，因为上面处理了一个类型
  if (action.type === 'user/getUserProfile') {
    return {
      ...state,
      profile: action.payload,
    };
  }

  // 更新用户描述信息
  if (action.type === 'user/updateProfile') {
    return {
      ...state,
      profile: {
        ...state.profile, // 在原来的 {name: xx, intro: yy},基础上来谁覆盖谁
        ...action.payload, // {name: xx} , {intro: yy}
      },
    };
  }

  return state;
};
